package model

import "gorm.io/gorm"

type User struct {
	gorm.Model
	NickName string `gorm:"type:varchar(20);not null" json:"nickName"`
	Avatar   string `gorm:"type:varchar(255);not null" json:"avatar"`
	Mobile   string `gorm:"type:varchar(20);not null" json:"mobile"`
	Password string `gorm:"type:varchar(255);not null" json:"password"`
	Address  string `gorm:"type:varchar(255);not null" json:"address"`
	Status   int64  `gorm:"type:int;not null" json:"status"`
}

type Goods struct {
	gorm.Model
	MerchantId int64   `gorm:"type:int;not null" json:"merchantId"`
	Name       string  `gorm:"type:varchar(20);not null" json:"name"`
	Introduce  string  `gorm:"type:varchar(255);not null" json:"introduce"`
	Price      float64 `gorm:"type:decimal(10,2);not null" json:"price"`
	Stock      int64   `gorm:"type:int;not null" json:"stock"`
	Sale       int64   `gorm:"type:int;not null" json:"sale"`
	Status     int64   `gorm:"type:int;not null" json:"status"`
}

type Order struct {
	gorm.Model
	UserId     int64   `gorm:"type:int;not null" json:"userId"`
	GoodsId    int64   `gorm:"type:int;not null" json:"goodsId"`
	MerchantId int64   `gorm:"type:int;not null" json:"merchantId"`
	OrderSn    string  `gorm:"type:varchar(255);not null" json:"orderSn"`
	Quantity   int64   `gorm:"type:int;not null" json:"quantity"`
	Price      float64 `gorm:"type:decimal(10,2);not null" json:"price"`
	Address    string  `gorm:"type:varchar(255);not null" json:"address"`
	Status     int64   `gorm:"type:int;not null" json:"status"`
}

type Rider struct {
	gorm.Model
	Name string `gorm:"type:varchar(20);not null" json:"name"`
	Num  int64  `gorm:"type:int;not null" json:"num"`
}

type Merchant struct {
	gorm.Model
	Title     string  `gorm:"type:varchar(20);not null" json:"title"`
	Score     float64 `gorm:"type:decimal(10,2);not null" json:"score"`
	Introduce string  `gorm:"type:varchar(255);not null" json:"introduce"`
}

type Appointment struct {
	gorm.Model
	MerchantId int64  `gorm:"type:int;not null" json:"merchantId"`
	UserId     int64  `gorm:"type:int;not null" json:"userId"`
	Date       string `gorm:"type:varchar(255);not null" json:"date"`
	Num        int64  `gorm:"type:int;not null" json:"num"`
	Mobile     string `gorm:"type:char(11);not null" json:"mobile"`
	Status     int64  `gorm:"type:int;not null" json:"status"`
}

type Comment struct {
	gorm.Model
	MerchantId int64  `gorm:"type:int;not null" json:"merchantId"`
	UserId     int64  `gorm:"type:int;not null" json:"userId"`
	Context    string `gorm:"type:varchar(255);not null" json:"context"`
}

type Address struct {
	gorm.Model
	Name          string `gorm:"type:varchar(20);not null" json:"name"`
	BusinessHours string `gorm:"type:varchar(255);not null" json:"businessHours"`
}

type Operate struct {
	gorm.Model
	Name string `gorm:"type:varchar(20);not null" json:"name"`
	Num  int64  `gorm:"type:int;not null" json:"num"`
}
